﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using DTO;
using BUS;
namespace GUI
{
    public partial class FormPhucHoiDuLieuNhaHang : Form
    {
        public FormPhucHoiDuLieuNhaHang()
        {
            InitializeComponent();
        }

        public void GetDataFromExcel(String FileName,int CODE_NAME)
        {
            string strConnectionString;
            OleDbConnection CONN = new OleDbConnection();
            OleDbCommand command;
            OleDbDataReader reader;
            
            switch (CODE_NAME)
            {
                case 0: // Phục Hồi Danh Sách Món Ăn
                    try
                    {
                        MonAnBUS MonBus = new MonAnBUS();
                        MonBus.XoaTatCa();
                        strConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0 Macro;HDR=Yes;IMEX=1'";
                        CONN.ConnectionString = strConnectionString;
                        CONN = new OleDbConnection(strConnectionString);
                        CONN.Open();
                        string strQuery = "SELECT STT,Ten_Mon_An,Ma_Loai_Mon_An,Ma_Loai_Menu,Don_Gia FROM [Sheet1$]";
                        command = new OleDbCommand(strQuery, CONN);
                        reader = command.ExecuteReader();

                        while (reader.Read())
                        {

                            MonAnDTO singleRecord = new MonAnDTO();
                            MonAnBUS baBus = new MonAnBUS();
                            singleRecord.Id_Mon_An = Convert.ToInt32(reader.GetDouble(0));
                            singleRecord.Ten_Mon_An = reader.GetString(1);
                            singleRecord.Id_Loai_Mon_An = Convert.ToInt32(reader.GetDouble(2));
                            singleRecord.Id_Loai_Menu = Convert.ToInt32(reader.GetDouble(3));
                            singleRecord.Don_Gia = Convert.ToInt32(reader.GetDouble(4));
                            baBus.PhucHoiDanhSachMonAnVoiIDTung(singleRecord);

                        }
                    }catch(Exception ex)
                    {
                        MessageBox.Show("Danh Sách Món Ăn Không Phù hợp...Vui Lòng Thử Lại");
                    }
                    break;
                case 1: // Phục Hồi Danh Sách Loại Món Ăn
                    try
                    {
                        LoaiMonAnBUS loaiMonBus = new LoaiMonAnBUS();
                        loaiMonBus.XoaTatCa();
                        strConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0 Macro;HDR=Yes;IMEX=1'";
                        CONN.ConnectionString = strConnectionString;
                        CONN = new OleDbConnection(strConnectionString);
                        CONN.Open();
                        string strQuery = "SELECT Ma_Loai_Mon,Ten_Loai_Mon FROM [Sheet1$]";
                        command = new OleDbCommand(strQuery, CONN);
                        reader = command.ExecuteReader();

                        while (reader.Read())
                        {

                            LoaiMonAnDTO singleRecord = new LoaiMonAnDTO();
                            LoaiMonAnBUS baBus = new LoaiMonAnBUS();
                            singleRecord.Id_Loai = Convert.ToInt32(reader.GetDouble(0));
                            singleRecord.Ten_Mon_An = reader.GetString(1);
                            baBus.PhucHoiThemLoaiMonVoiIDTung(singleRecord);

                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Danh Sách Loại Món Ăn Không Phù hợp...Vui Lòng Thử Lại");
                    }
                    break;
                case 2: // Phục Hồi Dữ Liệu Bàn Ăn
                    try
                    {
 
                        BanAnBUS banAnBus = new BanAnBUS();
                        banAnBus.XoaTatCa();
                        strConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0 Macro;HDR=Yes;IMEX=1'";
                        CONN.ConnectionString = strConnectionString;
                        CONN = new OleDbConnection(strConnectionString);
                        CONN.Open();
                        string strQuery = "SELECT Ma_Khu_Vuc,Ten_Ban_An FROM [Sheet1$]";
                        command = new OleDbCommand(strQuery, CONN);
                        reader = command.ExecuteReader();
                        int STT = 0;
                        while (reader.Read())
                        {

                            BanAnDTO singleRecord = new BanAnDTO();
                            BanAnBUS baBus = new BanAnBUS();
                            singleRecord.Id_Khu_Vuc = Convert.ToInt32(reader.GetDouble(0));
                            singleRecord.Ten_Ban_An = reader.GetString(1);
                            baBus.ThemBanAnVoiIDTung(singleRecord,STT+1);
                            STT = STT + 1;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Danh Sách Bàn Ăn Không Phù hợp...Vui Lòng Thử Lại");
                    }
                    break;
                case 3: // Phục Hồi Danh Sach Khu Vực
                    try
                    {
                        KhuVucBUS khuVucBus = new KhuVucBUS();
                        khuVucBus.XoaTatCa();
                        strConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0 Macro;HDR=Yes;IMEX=1'";
                        CONN.ConnectionString = strConnectionString;
                        CONN = new OleDbConnection(strConnectionString);
                        CONN.Open();
                        string strQuery = "SELECT Ma_Khu_Vuc,Ten_Khu_Vuc FROM [Sheet1$]";
                        command = new OleDbCommand(strQuery, CONN);
                        reader = command.ExecuteReader();
                    
                        while (reader.Read())
                        {

                            KhuVucDTO singleRecord = new KhuVucDTO();
                            KhuVucBUS baBus = new KhuVucBUS();
                            singleRecord.Id_Khu_Vuc = Convert.ToInt32(reader.GetDouble(0));
                            singleRecord.Ten_Khu_Vuc = reader.GetString(1);
                            baBus.PhucHoiThemKhuVucVoiIDTung(singleRecord);
                       
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Danh Sách Khu Vực Không Phù hợp...Vui Lòng Thử Lại"+ex.ToString());
                    }
                    break;
            }
            CONN.Close();
            
        }
        private void btnChonNoiLuu_Click(object sender, EventArgs e)
        {
            // Kiểm tra nếu không có danh sách nào được chọn
            if (!cbDanhSachBanAn.Checked && !cbDanhSachKhuVuc.Checked && !cbDanhSachLoaiMonAn.Checked && !cbDanhSachMonAn.Checked)
            {
                MessageBox.Show("Vui Lòng Chọn Danh Sách Để Phục Hồi");
                return;
            }
            btnChonNoiLuu.Enabled = false;
            btnThoat.Enabled = false;
            if(cbDanhSachMonAn.Checked)
            {
                if (PathDSMonAn == "")
                {
                    MessageBox.Show("Vui Lòng Chọn Đường Dẫn Cho Danh Sách Món Ăn");
                    btnChonNoiLuu.Enabled = true;
                    btnThoat.Enabled = true;
                    return;
                }
                else
                {
                    GetDataFromExcel(PathDSMonAn, 0);
                }
            }
            if (cbDanhSachLoaiMonAn.Checked)
            {
                if (PathDSLoaiMonAn == "")
                {
                    MessageBox.Show("Vui Lòng Chọn Đường Dẫn Cho Danh Sách Loại Món Ăn");
                    btnChonNoiLuu.Enabled = true;
                    btnThoat.Enabled = true;
                    return;
                }
                else
                {
                    GetDataFromExcel(PathDSLoaiMonAn, 1);
                }
            }
            if (cbDanhSachBanAn.Checked)
            {
                if (PathDSBanAn == "")
                {
                    MessageBox.Show("Vui Lòng Chọn Đường Dẫn Cho Danh Sách Bàn Ăn");
                    btnChonNoiLuu.Enabled = true;
                    btnThoat.Enabled = true;
                    return;
                }
                else
                {
                    GetDataFromExcel(PathDSBanAn, 2);
                }
            }
            if (cbDanhSachKhuVuc.Checked)
            {
                if (PathDSKhuVuc == "")
                {
                    MessageBox.Show("Vui Lòng Chọn Đường Dẫn Cho Danh Sách Khu Vực");
                    btnChonNoiLuu.Enabled = true;
                    btnThoat.Enabled = true;
                    return;
                }
                else
                {
                    GetDataFromExcel(PathDSKhuVuc, 3);
                }
            }
            MessageBox.Show("Phục Hồi Thành Công");
            btnChonNoiLuu.Enabled = true;
            btnThoat.Enabled = true;
            this.Close();
        }

        private void cbDanhSachMonAn_CheckedChanged(object sender, EventArgs e)
        {
            if (cbDanhSachMonAn.Checked)
            {
                btnLuuDSMonAn.Enabled = true;
            }
        }

        private void cbDanhSachLoaiMonAn_CheckedChanged(object sender, EventArgs e)
        {
            btnLuuDSLoaiMonAn.Enabled = true;
        }

        private void cbDanhSachKhuVuc_CheckedChanged(object sender, EventArgs e)
        {
            btnLuuDSKhuVuc.Enabled = true;
        }

        private void cbDanhSachBanAn_CheckedChanged(object sender, EventArgs e)
        {
            btnLuuDSBanAn.Enabled = true;
        }

        // Lấy Đường Dẫn Danh Sách Phục Hồi (File Excel)
        string PathDSMonAn = "";
        private void btnLuuDSMonAn_Click(object sender, EventArgs e)
        {

            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Excel File|*.xls";
            ofd.Title = "Chọn File";
            if(ofd.ShowDialog() == DialogResult.OK)
            {
                PathDSMonAn = ofd.FileName;
            }
        }
        // Lấy Đường Dẫn Danh Sách Phục Hồi (File Excel)
        string PathDSLoaiMonAn ="";
        private void btnLuuDSLoaiMonAn_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Excel File|*.xls";
            ofd.Title = "Chọn File";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                PathDSLoaiMonAn = ofd.FileName;
            }

        }
        // Lấy Đường Dẫn Danh Sách Phục Hồi (File Excel)
        string PathDSKhuVuc = "";
        private void btnLuuDSKhuVuc_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Excel File|*.xls";
            ofd.Title = "Chọn File";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                PathDSKhuVuc = ofd.FileName;
            }
        }
        // Lấy Đường Dẫn Danh Sách Phục Hồi (File Excel)
        string PathDSBanAn = "";
        private void btnLuuDSBanAn_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Excel File|*.xls";
            ofd.Title = "Chọn File";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                PathDSBanAn = ofd.FileName;
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
